package someTestExcemple.huaweiOd.slidingWindow;
//https://blog.csdn.net/guorui_java/article/details/132947931
//华为OD机试 - 关联子串 - 滑动窗口（Java 2025 A卷 100分）
import java.util.*;
public class TheAssociatedSubstring {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] arr = sc.nextLine().split(" ");

        String str1 = arr[0];
        String str2 = arr[1];
        int a = str1.length();
        int b = str2.length();

        //a比b长，肯定不是关联字串
        if(a > b){
            System.out.println(-1);
            return;
        }

        //方法1
//        // 使用字符计数数组优化
//        /**
//         * 使用长度为 256 的数组也是可行的办法。
//         * 因为 ASCII 字符集共有 128 个字符，扩展 ASCII 字符集有 256 个字符。
//         * 使用长度为 256 的数组，能涵盖所有 ASCII 字符，从而处理包含各种 ASCII 字符的输入字符串。
//         */
//        //一般用Map进行统计出现频率
//        int[] countStr1 = new int[256];
//        int[] window = new int[256];
//
//        for(char c : str1.toCharArray()){
//            countStr1[c]++;
//        }
//
//        for(int i = 0; i <= b - a; i++){
//            // 如果是第一次或者上一个窗口向右滑动一位后的新窗口
//            if(i == 0){
//                for(int j = 0; j < a; j++){
//                    window[str2.charAt(j)]++;
//                }
//            } else {
//                window[str2.charAt(i - 1)]--;
//                window[str2.charAt(i + a -1)]++;
//            }
//
//            if(matches(countStr1, window)){
//                System.out.println(i);
//                return;
//            }
//        }
//        System.out.println(-1);
        //2.用Map统计出现频率
        Map<Character,Integer> map = new HashMap<>();
        //初始化Str1各字符出现频率
        for(int i=0;i<a;i++) {
            map.put(str1.charAt(i),map.getOrDefault(str1.charAt(i),0)+1);
        }
        //初始化窗口的字符出现频率
        Map<Character,Integer> windowMap = new HashMap<>();
        for(int i=0;i<a;i++) {
            char c = str2.charAt(i);
            int num = windowMap.getOrDefault(c,0);
            windowMap.put(c,num+1);
        }
        int result =-1; //默认没有
        if(check(map,windowMap)) {
            result=0;
            System.out.println(result);
            return;
        }
        //进行窗口滑动
        for(int i=a;i<b;i++) {
            char removeC = str2.charAt(i-a);
            char addC = str2.charAt(i);
            if(windowMap.get(removeC) ==1) {
                windowMap.remove(removeC);
            } else {
                windowMap.put(removeC,windowMap.getOrDefault(removeC,0)-1);
            }
            windowMap.put(str2.charAt(i),windowMap.getOrDefault(str2.charAt(i),0)+1);
            if(check(map,windowMap)) {
                result =i-a+1;
                break;
            }
        }
        System.out.println(result);
    }

    // 判断两个字符计数数组是否相等
    public static boolean matches(int[] count1, int[] count2){
        for(int i = 0; i < 256; i++){
            if(count1[i] != count2[i]){
                return false;
            }
        }
        return true;
    }
    public static boolean check(Map<Character,Integer> map,Map<Character,Integer> windowMap) {
        for(Character c : map.keySet()) {
            if(windowMap.get(c) == null || windowMap.get(c) != map.get(c)) {
                //窗口内没有str1的c字符或者出现频率不一致
                return false;
            }
        }
        return true;
    }
}
